package com.qf.netty.entity;

import lombok.Data;
import org.kurento.client.MediaPipeline;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * 一个直播的房间
 * author Ken
 * create_time 2023/1/4
 */
@Data
public class Rooms {

    /**
     * 当前的房间号
     */
    private Integer roomId;

    /**
     * 主播的Channel
     */
    private User master;

    /**
     * 当前房间对应的媒体管道
     */
    private MediaPipeline mediaPipeline;

    /**
     * 观看者的Channel
     */
    private List<User> slaves = new CopyOnWriteArrayList<>();

    /**
     * 添加观看者
     * @param slave
     */
    public void addSlave(User slave){
        this.slaves.add(slave);
    }

    /**
     * 发送消息给房间中所有观看者
     * isMaster - true 表示该消息也要发送给主播 false - 不用发送给主播
     */
    public void sendMessageAll(Message message, boolean isMaster){
        if (isMaster) {
            //消息要发送给主播
            this.getMaster().getChannel().writeAndFlush(message);
        }

        //发送给所有观看者
        for (User slave : slaves) {
            slave.getChannel().writeAndFlush(message);
        }
    }
}
